/*
  ==============================================================================

  This is an automatically generated file created by the Jucer!

  Creation date:  30 May 2008 2:47:50 pm

  Be careful when adding custom code to these files, as only the code within
  the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
  and re-saved.

  Jucer version: 1.11

  ------------------------------------------------------------------------------

  The Jucer is part of the JUCE library - "Jules' Utility Class Extensions"
  Copyright 2004-6 by Raw Material Software ltd.

  ==============================================================================
*/

//[Headers] You can add your own extra header files here...
//[/Headers]

#include "KetonalConfigComponent.h"


//[MiscUserDefs] You can add your own user definitions and misc code here...
//[/MiscUserDefs]

//==============================================================================
KetonalConfigComponent::KetonalConfigComponent (File _f)
    : url (0),
      proxyEnable (0),
      proxyUrl (0),
      proxyType (0),
      browseImage (0),
      label2 (0),
      saveConfig (0),
      label (0),
      label3 (0),
      formEditorButton (0),
      internalCachedImage2 (0)
{
    addAndMakeVisible (url = new TextEditor (T("URL")));
    url->setMultiLine (false);
    url->setReturnKeyStartsNewLine (false);
    url->setReadOnly (false);
    url->setScrollbarsShown (false);
    url->setCaretVisible (true);
    url->setPopupMenuEnabled (true);
    url->setColour (TextEditor::shadowColourId, Colour (0x0));
    url->setText (String::empty);

    addAndMakeVisible (proxyEnable = new ToggleButton (T("Proxy Enabled")));
    proxyEnable->setButtonText (T("proxy"));
    proxyEnable->addButtonListener (this);

    addAndMakeVisible (proxyUrl = new TextEditor (T("Proxy Url")));
    proxyUrl->setMultiLine (false);
    proxyUrl->setReturnKeyStartsNewLine (false);
    proxyUrl->setReadOnly (false);
    proxyUrl->setScrollbarsShown (false);
    proxyUrl->setCaretVisible (true);
    proxyUrl->setPopupMenuEnabled (true);
    proxyUrl->setColour (TextEditor::shadowColourId, Colour (0x0));
    proxyUrl->setText (String::empty);

    addAndMakeVisible (proxyType = new ComboBox (T("Proxy Type")));
    proxyType->setEditableText (false);
    proxyType->setJustificationType (Justification::centredLeft);
    proxyType->setTextWhenNothingSelected (String::empty);
    proxyType->setTextWhenNoChoicesAvailable (T("(no choices)"));
    proxyType->addItem (T("HTTP"), 1);
    proxyType->addItem (T("SOCKS4"), 2);
    proxyType->addItem (T("SOCKS4a"), 3);
    proxyType->addItem (T("SOCKS5"), 4);
    proxyType->addListener (this);

    addAndMakeVisible (browseImage = new ImageButton (T("new button")));
    browseImage->addButtonListener (this);

    browseImage->setImages (false, true, true,
                            ImageCache::getFromMemory (folder_png, folder_pngSize), 0.6415f, Colour (0x0),
                            ImageCache::getFromMemory (folder_png, folder_pngSize), 1.0000f, Colour (0x0),
                            0, 1.0000f, Colour (0x0));
    addAndMakeVisible (label2 = new Label (T("new label"),
                                           T("Image")));
    label2->setFont (Font (9.0000f, Font::plain));
    label2->setJustificationType (Justification::centredLeft);
    label2->setEditable (false, false, false);
    label2->setColour (Label::textColourId, Colour (0xff454545));
    label2->setColour (TextEditor::textColourId, Colours::black);
    label2->setColour (TextEditor::backgroundColourId, Colour (0x0));

    addAndMakeVisible (saveConfig = new ImageButton (T("Save Config")));
    saveConfig->setTooltip (T("Save Config"));
    saveConfig->setButtonText (T("new button"));
    saveConfig->addButtonListener (this);

    saveConfig->setImages (false, true, true,
                           ImageCache::getFromMemory (save_png, save_pngSize), 0.5535f, Colour (0x0),
                           ImageCache::getFromMemory (save_png, save_pngSize), 1.0000f, Colour (0x0),
                           ImageCache::getFromMemory (save_png, save_pngSize), 0.7610f, Colour (0xbcffffe9));
    addAndMakeVisible (label = new Label (T("new label"),
                                          T("Proxy Url")));
    label->setFont (Font (10.0000f, Font::plain));
    label->setJustificationType (Justification::centredLeft);
    label->setEditable (false, false, false);
    label->setColour (TextEditor::textColourId, Colours::black);
    label->setColour (TextEditor::backgroundColourId, Colour (0x0));

    addAndMakeVisible (label3 = new Label (T("new label"),
                                           T("URL")));
    label3->setFont (Font (10.0000f, Font::plain));
    label3->setJustificationType (Justification::centredLeft);
    label3->setEditable (false, false, false);
    label3->setColour (TextEditor::textColourId, Colours::black);
    label3->setColour (TextEditor::backgroundColourId, Colour (0x0));

    addAndMakeVisible (formEditorButton = new ImageButton (T("HTML Form Editor")));
    formEditorButton->setTooltip (T("HTML Form Editor"));
    formEditorButton->addButtonListener (this);

    formEditorButton->setImages (false, true, true,
                                 ImageCache::getFromMemory (html_png, html_pngSize), 0.5346f, Colour (0x0),
                                 ImageCache::getFromMemory (html_png, html_pngSize), 1.0000f, Colour (0x0),
                                 0, 1.0000f, Colour (0x59fffd7e));
    internalCachedImage2 = ImageCache::getFromMemory (image_png, image_pngSize);

    //[UserPreSize]
	url->setFont (Font(11));
	proxyUrl->setFont (Font(11));

	xmlUrl			= 0;
	xmlProxy		= 0;
	xmlDoc			= 0;
	xmlRoot			= 0;
	configFile		= _f;
	xmlImgElm		= 0;
	xmlDoc			= new XmlDocument (_f);
	xmlRoot			= xmlDoc->getDocumentElement();
	imgMemoryBlock	= 0;
	formEditor		= 0;
	xmlFormData		= 0;

	if (xmlRoot == 0)
	{
		xmlRoot		= new XmlElement (T("ketonalConfig"));
		xmlProxy	= new XmlElement (T("proxy"));
		xmlUrl		= new XmlElement (T("url"));
		xmlImgElm	= new XmlElement (T("image"));

		config		= new KetonalConfig (xmlRoot, 0);
	}
	else
	{
		config		= new KetonalConfig (xmlRoot, &_f);
		xmlProxy	= new XmlElement (T("proxy"));
		xmlUrl		= new XmlElement (T("url"));
		xmlImgElm	= new XmlElement (T("image"));

		forEachXmlChildElement (*xmlRoot, e)
		{
			if (e->hasTagName (T("image")))
			{
				xmlImgElm = new XmlElement (*e);
				/* image found in config, give a preview */
				imgMemoryBlock = new MemoryBlock (e->getIntAttribute (T("data-base64-size")));
				if (imgMemoryBlock)
				{
					if (imgMemoryBlock->fromBase64Encoding (e->getStringAttribute(T("data-base64"))))
					{
						Image *i = ImageFileFormat::loadFrom (imgMemoryBlock->getData(), imgMemoryBlock->getSize());
						if (i)
						{
							ImageCache::release (internalCachedImage2);
							internalCachedImage2 = i;
						}
					}
					else
					{
						deleteAndZero (imgMemoryBlock);
					}
				}
			}
			if (e->hasTagName (T("url")))
			{
				url->setText (e->getStringAttribute (T("url")), false);
			}
			if (e->hasTagName (T("proxy")))
			{
				proxyType->setText (e->getStringAttribute (T("proxyType")), false);
				proxyUrl->setText (e->getStringAttribute (T("proxyUrl")), false);
				proxyEnable->setToggleState (e->getBoolAttribute(T("proxyEnable")), false);
				if (!proxyEnable->getToggleState())
				{
					proxyUrl->setText (String::empty, false);
					proxyType->setText (String::empty, false);
					proxyUrl->setEnabled (false);
					proxyType->setEnabled (false);
				}
			}
		}
	}
    //[/UserPreSize]

    setSize (256, 128);

    //[Constructor] You can add your own custom stuff here..
    //[/Constructor]
}

KetonalConfigComponent::~KetonalConfigComponent()
{
    //[Destructor_pre]. You can add your own custom destruction code here..
	if (imgMemoryBlock)
		deleteAndZero (imgMemoryBlock);
	if (formEditor)
		deleteAndZero (formEditor);

    //[/Destructor_pre]

    deleteAndZero (url);
    deleteAndZero (proxyEnable);
    deleteAndZero (proxyUrl);
    deleteAndZero (proxyType);
    deleteAndZero (browseImage);
    deleteAndZero (label2);
    deleteAndZero (saveConfig);
    deleteAndZero (label);
    deleteAndZero (label3);
    deleteAndZero (formEditorButton);
    ImageCache::release (internalCachedImage2);

    //[Destructor]. You can add your own custom destruction code here..
    //[/Destructor]
}

//==============================================================================
void KetonalConfigComponent::paint (Graphics& g)
{
    //[UserPrePaint] Add your own custom painting code here..
    //[/UserPrePaint]

    GradientBrush gradient_1 (Colour (0xffcecece),
                              128.0f, 64.0f,
                              Colour (0xffa1a1a1),
                              (float) (-8), 144.0f,
                              true);
    g.setBrush (&gradient_1);
    g.fillRoundedRectangle (0.0f, 0.0f, 256.0f, 128.0f, 10.0000f);

    g.setColour (Colours::black.withAlpha (0.7800f));
    g.drawImage (internalCachedImage2,
                 72, 86, 32, 32,
                 0, 0, internalCachedImage2->getWidth(), internalCachedImage2->getHeight());

    //[UserPaint] Add your own custom painting code here..
    //[/UserPaint]
}

void KetonalConfigComponent::resized()
{
    url->setBounds (24, 11, 208, 16);
    proxyEnable->setBounds (104, 34, 55, 16);
    proxyUrl->setBounds (24, 56, 208, 16);
    proxyType->setBounds (160, 34, 72, 16);
    browseImage->setBounds (24, 88, 32, 32);
    label2->setBounds (24, 80, 32, 8);
    saveConfig->setBounds (216, 88, 32, 32);
    label->setBounds (24, 47, 40, 8);
    label3->setBounds (24, 2, 40, 8);
    formEditorButton->setBounds (176, 88, 32, 32);
    //[UserResized] Add your own custom resize handling here..
    //[/UserResized]
}

void KetonalConfigComponent::buttonClicked (Button* buttonThatWasClicked)
{
    //[UserbuttonClicked_Pre]
    //[/UserbuttonClicked_Pre]

    if (buttonThatWasClicked == proxyEnable)
    {
        //[UserButtonCode_proxyEnable] -- add your button handler code here..
		if (proxyEnable->getToggleState())
		{
			proxyType->setEnabled (true);
			proxyUrl->setEnabled (true);
		}
		else
		{
			proxyUrl->setText (String::empty, false);
			proxyType->setText (String::empty, false);
			proxyType->setEnabled (false);
			proxyUrl->setEnabled (false);
		}
        //[/UserButtonCode_proxyEnable]
    }
    else if (buttonThatWasClicked == browseImage)
    {
        //[UserButtonCode_browseImage] -- add your button handler code here..
		FileChooser imageFileChooser ("Select image", File::getSpecialLocation (File::userHomeDirectory), "*.jpg;*.png;*.gif;*.bmp");

		if (imageFileChooser.browseForFileToOpen (0))
		{
			File imageFile (imageFileChooser.getResult());
			if (imageFile.exists())
			{
				ImageCache::release (internalCachedImage2);
				internalCachedImage2 = ImageFileFormat::loadFrom (imageFile);

				if (internalCachedImage2)
				{
					double maxWidth =64;
					double maxHeight = 64;
					double imgWidth = internalCachedImage2->getWidth();
					double imgHeight = internalCachedImage2->getHeight();
					double xRatio = maxWidth / imgWidth;
					double yRatio = maxHeight / imgHeight;
					double tnWidth = 0;
					double tnHeight = 0;

					if( (imgWidth <= maxWidth) && (imgHeight <= maxHeight) )
					{
						tnWidth = imgWidth;
						tnWidth = imgHeight;
					}
					else if ((xRatio * imgHeight) < maxHeight)
					{
						tnHeight = ceil ((double)xRatio * imgHeight);
						tnWidth = maxWidth;
					}
					else
					{
						tnWidth = ceil ((double)yRatio * imgWidth);
						tnHeight = maxHeight;
					}

					Image *scaleImage = internalCachedImage2->createCopy ((int)tnWidth, (int)tnHeight, Graphics::mediumResamplingQuality);
					File *fTn  = new File(configFile.withFileExtension (T("png")));
					if (fTn->exists())
					{
						fTn->deleteFile();
						fTn->create();
					}
					FileOutputStream *fTnOut = new FileOutputStream (*fTn);

					PNGImageFormat *tnPng = new PNGImageFormat();
					tnPng->writeImageToStream (*scaleImage, *fTnOut);

					XmlDataElement dataElement (*fTn);

					xmlImgElm = new XmlElement (dataElement.getXmlElement (T("image")));

					deleteAndZero (fTnOut);
					fTn->deleteFile();
					deleteAndZero (fTn);
					deleteAndZero (scaleImage);
				}
			}
		}
        //[/UserButtonCode_browseImage]
    }
    else if (buttonThatWasClicked == saveConfig)
    {
        //[UserButtonCode_saveConfig] -- add your button handler code here..
		xmlRoot = new XmlElement (T("ketonalConfig"));
		xmlUrl = new XmlElement (T("url"));
		xmlProxy = new XmlElement (T("proxy"));
		XmlElement *e = config->getFormData();
		XmlElement *img = new XmlElement (*xmlImgElm);

		if (e)
		{
			xmlFormData = new XmlElement (*e);
		}
		else
		{
			xmlFormData = new XmlElement (T("HTMLFormData"));
		}

		xmlUrl->setAttribute (T("url"), url->getText());
		xmlProxy->setAttribute (T("proxyEnable"), proxyEnable->getToggleState());
		xmlProxy->setAttribute (T("proxyUrl"), proxyUrl->getText());
		xmlProxy->setAttribute (T("proxyType"), proxyType->getText());

		xmlRoot->addChildElement (xmlUrl);
		xmlRoot->addChildElement (xmlProxy);
		
		if (xmlImgElm)
			xmlRoot->addChildElement (img);

		if (xmlFormData)
			xmlRoot->addChildElement (xmlFormData);

		configFile.replaceWithText (xmlRoot->createDocument (String::empty, false));

		deleteAndZero (xmlRoot);
        //[/UserButtonCode_saveConfig]
    }
    else if (buttonThatWasClicked == formEditorButton)
    {
        //[UserButtonCode_formEditorButton] -- add your button handler code here..
		if (!formEditor)
			formEditor = new KetonalFormEditorWindow (this, config);
		else
			formEditor->toFront(true);
        //[/UserButtonCode_formEditorButton]
    }

    //[UserbuttonClicked_Post]
    //[/UserbuttonClicked_Post]
}

void KetonalConfigComponent::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
{
    //[UsercomboBoxChanged_Pre]
    //[/UsercomboBoxChanged_Pre]

    if (comboBoxThatHasChanged == proxyType)
    {
        //[UserComboBoxCode_proxyType] -- add your combo box handling code here..
        //[/UserComboBoxCode_proxyType]
    }

    //[UsercomboBoxChanged_Post]
    //[/UsercomboBoxChanged_Post]
}



//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
void KetonalConfigComponent::textEditorTextChanged (TextEditor &editor)
{
}

void KetonalConfigComponent::textEditorReturnKeyPressed (TextEditor &editor)
{
}

void KetonalConfigComponent::textEditorEscapeKeyPressed (TextEditor &editor)
{
}

void KetonalConfigComponent::textEditorFocusLost (TextEditor &editor)
{
}

void KetonalConfigComponent::closeFormEditor()
{
	if (formEditor)
	{
		formEditor = 0;
	}
}
//[/MiscUserCode]


//==============================================================================
#if 0
/*  -- Jucer information section --

    This is where the Jucer puts all of its metadata, so don't change anything in here!

BEGIN_JUCER_METADATA

<JUCER_COMPONENT documentType="Component" className="KetonalConfigComponent" componentName=""
                 parentClasses="public Component, public TextEditorListener" constructorParams="File _f"
                 variableInitialisers="" snapPixels="8" snapActive="1" snapShown="1"
                 overlayOpacity="0.330000013" fixedSize="1" initialWidth="256"
                 initialHeight="128">
  <BACKGROUND backgroundColour="ffffff">
    <ROUNDRECT pos="0 0 256 128" cornerSize="10" fill=" radial: 128 64, -8 144, 0=ffcecece, 1=ffa1a1a1"
               hasStroke="0"/>
    <IMAGE pos="72 86 32 32" resource="image_png" opacity="0.78" mode="0"/>
  </BACKGROUND>
  <TEXTEDITOR name="URL" id="d12aa32704817695" memberName="url" virtualName=""
              explicitFocusOrder="0" pos="24 11 208 16" shadowcol="0" initialText=""
              multiline="0" retKeyStartsLine="0" readonly="0" scrollbars="0"
              caret="1" popupmenu="1"/>
  <TOGGLEBUTTON name="Proxy Enabled" id="ddb0a7c9341ca424" memberName="proxyEnable"
                virtualName="" explicitFocusOrder="0" pos="104 34 55 16" buttonText="proxy"
                connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/>
  <TEXTEDITOR name="Proxy Url" id="c37757911dd8a4fd" memberName="proxyUrl"
              virtualName="" explicitFocusOrder="0" pos="24 56 208 16" shadowcol="0"
              initialText="" multiline="0" retKeyStartsLine="0" readonly="0"
              scrollbars="0" caret="1" popupmenu="1"/>
  <COMBOBOX name="Proxy Type" id="6b9e89649404dd05" memberName="proxyType"
            virtualName="" explicitFocusOrder="0" pos="160 34 72 16" editable="0"
            layout="33" items="HTTP&#10;SOCKS4&#10;SOCKS4a&#10;SOCKS5&#10;" textWhenNonSelected=""
            textWhenNoItems="(no choices)"/>
  <IMAGEBUTTON name="new button" id="60cc95181fd93703" memberName="browseImage"
               virtualName="" explicitFocusOrder="0" pos="24 88 32 32" buttonText="new button"
               connectedEdges="0" needsCallback="1" radioGroupId="0" keepProportions="1"
               resourceNormal="folder_png" opacityNormal="0.641509414" colourNormal="0"
               resourceOver="folder_png" opacityOver="1" colourOver="0" resourceDown=""
               opacityDown="1" colourDown="0"/>
  <LABEL name="new label" id="23cb0e3108d720fb" memberName="label2" virtualName=""
         explicitFocusOrder="0" pos="24 80 32 8" textCol="ff454545" edTextCol="ff000000"
         edBkgCol="0" labelText="Image" editableSingleClick="0" editableDoubleClick="0"
         focusDiscardsChanges="0" fontname="Default font" fontsize="9"
         bold="0" italic="0" justification="33"/>
  <IMAGEBUTTON name="Save Config" id="5275ac5d55c645cf" memberName="saveConfig"
               virtualName="" explicitFocusOrder="0" pos="216 88 32 32" tooltip="Save Config"
               buttonText="new button" connectedEdges="0" needsCallback="1"
               radioGroupId="0" keepProportions="1" resourceNormal="save_png"
               opacityNormal="0.553459108" colourNormal="0" resourceOver="save_png"
               opacityOver="1" colourOver="0" resourceDown="save_png" opacityDown="0.761006296"
               colourDown="bcffffe9"/>
  <LABEL name="new label" id="cb053b0128110a83" memberName="label" virtualName=""
         explicitFocusOrder="0" pos="24 47 40 8" edTextCol="ff000000"
         edBkgCol="0" labelText="Proxy Url" editableSingleClick="0" editableDoubleClick="0"
         focusDiscardsChanges="0" fontname="Default font" fontsize="10"
         bold="0" italic="0" justification="33"/>
  <LABEL name="new label" id="2c398cea4d9df4a8" memberName="label3" virtualName=""
         explicitFocusOrder="0" pos="24 2 40 8" edTextCol="ff000000" edBkgCol="0"
         labelText="URL" editableSingleClick="0" editableDoubleClick="0"
         focusDiscardsChanges="0" fontname="Default font" fontsize="10"
         bold="0" italic="0" justification="33"/>
  <IMAGEBUTTON name="HTML Form Editor" id="a11120b5f9d6fe78" memberName="formEditorButton"
               virtualName="" explicitFocusOrder="0" pos="176 88 32 32" tooltip="HTML Form Editor"
               buttonText="HTML Form Editor" connectedEdges="0" needsCallback="1"
               radioGroupId="0" keepProportions="1" resourceNormal="html_png"
               opacityNormal="0.534591198" colourNormal="0" resourceOver="html_png"
               opacityOver="1" colourOver="0" resourceDown="" opacityDown="1"
               colourDown="59fffd7e"/>
</JUCER_COMPONENT>

END_JUCER_METADATA
*/
#endif

//==============================================================================
// Binary resources - be careful not to edit any of these sections!

// JUCER_RESOURCE: folder_png, 1340, "C:\folder.png"
static const unsigned char resource_KetonalConfigComponent_folder_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,32,8,6,0,0,0,115,122,122,244,0,0,0,1,115,82,71,66,0,174,206,28,
233,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,216,5,23,8,45,15,137,17,194,114,0,0,4,188,73,68,65,84,88,195,237,
151,217,107,84,87,28,199,191,247,220,253,206,150,213,177,201,180,38,3,162,3,214,106,137,45,86,107,30,124,240,33,80,132,22,44,133,34,181,224,147,164,15,6,218,216,135,82,108,5,11,66,251,15,116,65,132,22,
90,76,11,241,165,98,77,109,193,74,80,187,224,36,198,166,75,162,70,51,201,204,157,187,111,231,244,33,147,144,232,76,162,102,160,80,122,94,46,119,57,231,247,57,223,223,114,207,15,248,127,252,203,131,91,
233,131,252,248,164,10,96,51,128,75,185,108,134,61,200,162,249,241,73,5,192,22,0,215,114,217,76,249,161,0,242,227,147,105,0,59,0,60,87,185,62,45,10,188,20,132,209,103,0,94,207,101,51,81,149,57,169,202,
183,187,0,236,32,28,183,141,240,68,14,195,232,106,46,155,217,186,34,192,224,208,48,1,240,65,123,186,249,5,85,150,214,203,146,8,89,18,33,139,34,100,73,0,199,113,40,25,22,116,211,254,10,192,43,0,154,43,
198,118,2,216,201,19,178,89,150,68,34,75,34,20,73,132,36,10,0,128,66,177,12,203,245,182,231,178,153,139,139,141,14,14,13,111,0,208,216,211,221,117,81,168,60,123,22,192,225,199,90,26,145,136,169,85,73,
27,18,49,16,66,94,44,150,205,219,130,192,55,41,98,5,82,18,33,10,124,213,57,241,152,10,211,113,95,27,28,26,230,42,176,219,1,236,20,5,161,53,174,41,236,151,235,127,110,154,7,24,5,16,234,166,45,212,2,0,128,
100,76,69,92,85,154,8,169,29,58,65,24,161,108,218,208,77,11,37,195,70,217,180,15,106,138,124,48,21,215,144,76,104,104,72,196,160,41,50,102,117,147,51,108,71,224,22,201,114,182,49,25,223,189,101,99,231,
67,69,177,227,249,208,231,220,3,221,176,224,184,62,226,49,21,169,184,134,84,34,134,84,92,91,112,201,226,113,119,86,135,227,249,233,197,111,190,46,25,214,238,32,140,106,74,202,24,131,97,187,75,12,82,198,
22,140,165,155,27,144,140,169,32,132,172,8,30,81,234,231,178,153,187,139,1,6,24,99,31,205,148,202,220,218,150,198,170,147,126,250,245,58,194,48,66,115,67,18,77,201,56,58,219,215,32,166,42,143,148,255,
17,165,183,1,96,1,181,167,187,107,2,192,240,116,177,122,218,250,65,8,199,245,177,49,251,56,114,217,12,218,214,52,61,178,113,198,128,40,162,183,150,0,204,171,48,171,155,160,148,86,5,0,0,77,145,86,93,253,
162,185,245,111,86,3,56,77,41,197,140,110,84,1,8,0,0,146,40,214,1,32,2,128,59,247,1,244,116,119,229,1,140,20,170,184,193,243,3,240,132,64,224,201,234,1,34,10,0,147,213,20,0,128,129,153,146,1,198,150,150,
125,47,8,33,75,98,93,126,64,21,23,76,213,4,8,194,8,37,195,90,234,2,63,168,154,207,171,80,224,118,45,128,75,0,110,222,155,13,94,16,66,170,175,2,85,131,16,61,221,93,12,192,192,189,113,224,7,33,228,250,42,
80,211,5,0,48,224,249,1,202,166,189,36,8,235,230,2,74,189,92,54,83,88,14,96,8,192,236,98,55,248,245,12,194,104,174,10,214,4,232,233,238,10,0,12,22,74,229,5,227,140,177,186,40,96,187,30,34,74,39,230,239,
151,91,113,192,118,188,87,109,199,155,15,154,71,86,32,140,34,152,182,11,195,114,66,195,180,206,9,2,223,191,44,192,129,3,189,228,206,173,155,223,165,219,218,221,233,98,89,137,107,115,53,95,126,136,42,200,
24,131,237,250,48,29,23,101,195,156,208,117,227,139,177,177,223,79,94,203,143,141,156,120,255,77,191,42,192,222,189,123,185,214,246,231,249,166,6,87,30,201,143,242,45,233,181,67,211,69,125,143,40,242,
224,121,2,254,1,170,160,31,132,48,29,23,134,229,184,166,105,157,157,158,46,124,122,254,252,133,111,165,148,96,188,215,215,119,223,161,118,1,96,223,254,62,210,246,68,171,40,145,64,101,84,209,64,249,152,
81,54,126,228,121,126,143,97,58,203,238,158,82,6,203,113,231,12,155,246,168,105,90,167,70,242,163,167,198,71,70,255,62,118,236,237,112,57,96,1,0,122,123,123,137,148,106,85,57,142,211,16,9,49,10,196,56,
248,137,63,110,220,184,182,117,91,23,189,51,91,34,9,237,254,163,154,235,5,48,29,7,166,237,90,182,109,127,83,40,20,63,25,250,254,194,15,9,49,112,143,28,57,242,64,71,120,1,0,166,166,166,88,71,99,103,8,234,
19,16,26,231,193,154,24,67,170,172,151,85,215,113,199,20,85,217,48,31,128,97,68,231,118,107,187,204,118,156,43,150,229,156,188,114,229,183,207,167,254,26,191,123,244,104,63,93,85,99,114,232,80,63,209,
154,91,52,68,81,27,56,108,0,208,209,145,237,220,181,46,219,249,82,186,185,1,45,141,73,88,142,91,116,93,239,203,153,153,217,143,207,156,57,119,249,195,227,253,126,221,59,163,151,223,120,135,91,151,80,85,
202,145,39,56,142,123,102,211,83,79,238,91,159,237,144,9,199,78,93,190,250,243,233,137,25,79,63,118,120,63,171,71,81,90,177,53,123,235,221,19,98,20,80,133,4,156,125,252,120,95,244,159,107,78,255,1,36,
158,59,16,78,56,57,65,0,0,0,0,73,69,78,68,174,66,96,130,0,0};

const char* KetonalConfigComponent::folder_png = (const char*) resource_KetonalConfigComponent_folder_png;
const int KetonalConfigComponent::folder_pngSize = 1340;

// JUCER_RESOURCE: save_png, 1503, "C:\save.png"
static const unsigned char resource_KetonalConfigComponent_save_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,32,8,6,0,0,0,115,122,122,244,0,0,0,1,115,82,71,66,0,174,206,28,233,
0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,216,5,23,8,48,22,18,22,6,174,0,0,5,95,73,68,65,84,88,195,221,151,91,
108,84,85,20,134,191,153,57,103,110,157,206,148,210,78,91,218,26,176,69,69,171,16,192,75,8,225,18,13,24,13,16,141,70,80,52,193,75,98,98,188,62,248,98,98,244,129,24,227,131,241,146,138,23,48,33,34,74,148,
4,66,43,94,106,1,209,34,165,92,66,104,109,105,7,232,76,193,182,51,211,25,208,206,116,102,246,94,62,64,27,74,237,180,80,212,196,149,156,135,179,179,207,249,255,253,239,189,246,250,23,252,199,97,187,26,
63,105,56,26,176,204,95,176,104,97,188,247,247,87,202,203,202,159,42,47,43,223,19,12,5,207,141,231,91,99,130,192,51,128,213,86,171,245,225,217,115,231,78,221,89,92,194,233,174,16,34,18,1,214,140,231,31,
150,43,0,245,3,171,44,22,203,35,78,187,121,171,203,105,226,176,155,88,128,93,117,223,243,73,245,123,40,165,51,162,117,69,195,254,125,157,87,69,129,134,163,1,23,176,220,2,143,58,236,230,18,151,195,52,157,
14,19,139,101,56,255,249,11,23,243,213,230,77,68,194,97,67,144,215,128,199,175,88,129,134,163,1,43,176,0,88,109,55,141,7,92,14,211,231,114,216,177,90,179,139,86,179,109,43,159,125,186,1,173,84,70,107,
61,125,127,83,227,201,108,243,173,151,14,236,62,212,118,99,195,209,192,90,211,176,5,114,115,156,245,254,124,239,19,5,121,30,95,142,203,49,38,56,192,157,75,239,193,157,147,3,136,33,200,203,227,82,224,249,
23,94,154,172,69,30,85,74,173,158,183,104,233,156,59,238,184,13,211,184,242,4,217,178,105,35,95,127,241,57,74,233,132,214,186,162,233,240,193,51,217,20,176,213,214,214,52,2,111,3,115,218,154,143,76,56,
45,239,94,182,2,211,225,0,112,129,60,63,214,22,216,218,143,183,21,197,99,49,0,122,206,116,209,217,25,156,16,1,175,215,199,226,187,150,0,32,194,51,179,110,158,153,151,141,64,74,68,54,31,57,114,120,104,
176,105,255,62,180,150,9,145,88,126,255,3,92,72,18,15,200,115,99,29,194,119,90,154,143,145,78,165,0,232,104,107,38,218,23,155,16,129,66,127,17,238,28,207,249,23,225,217,91,110,170,242,100,187,138,123,
148,82,11,221,110,247,52,191,191,8,165,20,86,195,164,162,178,242,178,129,69,132,246,227,237,172,95,87,205,201,142,118,68,4,17,113,11,18,238,238,237,217,151,173,22,196,227,241,248,202,170,170,155,17,17,
162,145,48,179,230,222,142,105,140,239,182,86,90,115,176,177,145,13,31,86,179,101,211,70,78,7,79,13,130,35,34,104,209,85,133,147,11,222,239,13,135,213,104,4,218,6,6,146,143,249,11,253,147,188,62,31,3,
201,36,121,147,11,40,157,50,37,43,112,114,96,128,221,245,245,124,92,253,30,117,59,107,232,237,233,190,0,170,135,17,16,17,175,136,116,245,134,195,77,163,17,16,192,150,76,38,151,78,159,126,29,34,194,217,
179,103,153,57,123,46,54,235,136,251,138,88,44,198,183,181,53,108,88,247,62,77,191,254,194,185,120,252,18,192,17,4,208,90,223,80,144,159,255,65,56,26,209,163,213,130,245,161,80,240,245,190,190,168,199,
235,245,113,38,120,138,96,48,200,181,211,166,14,49,60,221,117,154,93,117,223,113,160,225,103,146,201,36,90,169,203,57,34,149,2,15,2,155,71,243,3,3,192,20,17,185,173,188,252,154,243,42,156,59,203,245,55,
86,113,50,208,193,214,47,55,179,125,235,22,66,167,78,144,201,168,225,43,212,195,87,107,152,6,222,188,60,18,253,253,136,190,72,13,173,175,203,207,155,180,46,210,215,55,106,49,186,222,48,140,150,135,86,
62,108,49,13,3,165,21,134,97,146,232,255,19,165,20,74,105,180,202,160,148,70,41,133,86,10,165,21,42,163,208,90,97,181,217,40,42,46,193,95,92,140,213,106,165,173,165,133,174,206,206,243,115,212,249,71,
180,94,209,22,232,216,62,154,35,138,104,173,111,119,58,28,211,253,126,63,34,66,58,149,30,115,127,77,211,164,184,180,140,169,215,86,144,235,245,14,149,106,79,110,46,161,96,39,250,34,21,210,233,244,180,
88,60,190,254,111,171,225,133,120,183,185,185,25,45,122,108,75,101,55,153,82,86,206,13,55,85,81,232,247,99,189,228,192,58,156,78,138,74,74,0,208,90,19,142,70,56,21,10,86,141,229,9,59,210,233,212,67,147,
242,243,11,124,62,223,136,253,21,209,24,166,65,129,223,79,73,105,41,110,183,123,132,57,185,56,156,78,23,71,14,31,34,216,21,162,63,145,248,1,88,9,116,143,101,74,37,145,232,191,183,162,178,114,4,129,28,
143,135,146,210,50,156,46,87,86,96,17,161,249,216,49,118,126,83,75,180,47,218,100,179,217,158,84,74,189,58,8,62,150,37,219,216,221,221,189,54,26,137,230,249,124,190,225,43,114,57,179,2,3,116,180,31,103,
239,222,159,136,70,34,205,192,43,192,182,116,58,45,151,99,203,83,64,161,82,106,94,89,89,249,48,5,82,169,20,222,75,72,13,70,40,24,164,182,102,7,77,7,26,59,19,137,196,139,192,211,64,203,149,186,226,105,
54,155,237,248,138,21,247,217,236,118,115,88,26,22,22,21,227,201,205,29,154,216,211,211,195,207,123,247,112,242,196,137,48,240,6,80,13,36,39,218,152,196,68,100,150,97,24,51,6,83,114,240,16,14,12,36,241,
229,77,34,22,139,81,95,247,3,187,234,235,254,136,245,245,189,9,172,2,118,1,153,171,213,23,44,118,185,92,63,46,91,182,28,17,25,82,160,191,191,159,80,87,23,173,173,191,165,148,82,31,1,107,129,223,47,183,
124,143,183,49,57,60,123,246,156,153,21,21,21,36,147,73,90,91,91,9,4,58,116,38,147,249,28,120,13,232,248,167,123,200,53,22,139,69,138,252,69,98,183,59,4,216,1,204,252,55,155,88,43,240,22,176,237,66,179,
242,255,137,191,0,107,125,249,108,166,6,36,76,0,0,0,0,73,69,78,68,174,66,96,130,0,0};

const char* KetonalConfigComponent::save_png = (const char*) resource_KetonalConfigComponent_save_png;
const int KetonalConfigComponent::save_pngSize = 1503;

// JUCER_RESOURCE: image_png, 5931, "C:\image2.png"
static const unsigned char resource_KetonalConfigComponent_image_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,0,1,115,82,71,66,0,174,206,28,233,
0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,216,5,27,14,9,1,209,26,205,217,0,0,0,25,116,69,88,116,67,111,109,109,
101,110,116,0,67,114,101,97,116,101,100,32,119,105,116,104,32,71,73,77,80,87,129,14,23,0,0,22,134,73,68,65,84,120,218,237,93,75,112,19,215,154,254,91,173,151,133,73,41,56,196,38,64,98,66,22,169,108,198,
83,108,110,2,193,86,128,20,179,26,216,205,93,17,54,22,67,0,219,188,33,169,2,118,147,21,100,105,109,32,75,86,241,93,205,92,66,98,153,4,50,27,234,234,110,82,119,168,74,93,121,67,42,169,184,16,142,35,201,
82,75,61,11,250,168,126,29,255,231,209,47,61,28,159,170,174,214,179,165,115,190,239,124,255,227,60,218,128,0,202,236,236,236,24,0,28,1,128,113,0,152,208,252,90,17,0,10,0,176,0,0,115,217,108,182,8,235,
172,204,206,206,142,162,118,25,3,128,81,205,175,230,81,187,20,194,252,143,134,207,202,125,4,0,199,92,84,76,86,10,0,240,5,0,220,201,102,179,165,62,6,61,141,218,101,44,128,75,22,81,187,20,187,78,0,7,248,
107,78,37,195,40,37,0,248,28,0,110,245,19,17,28,224,167,1,96,10,0,210,33,253,204,29,0,184,17,36,17,12,151,149,188,30,114,5,215,16,33,155,205,94,239,3,240,251,182,93,12,23,189,254,182,174,125,55,12,131,
124,12,0,96,219,54,249,88,33,129,71,195,182,133,62,124,159,47,117,77,160,97,24,109,7,223,46,248,208,52,153,71,253,170,129,161,89,201,121,21,187,89,133,34,145,72,91,101,169,207,177,10,218,182,13,205,102,
83,183,210,51,217,108,246,86,15,129,63,13,0,55,85,159,139,68,34,16,137,68,192,52,77,48,12,3,34,145,72,235,204,131,143,219,194,178,172,214,107,10,53,200,248,233,28,134,162,146,31,57,149,76,235,178,154,
103,184,136,8,20,9,154,205,166,170,194,119,178,217,236,241,30,0,255,182,202,7,50,77,19,162,209,104,11,124,211,52,133,157,3,119,0,214,6,205,102,19,26,141,70,235,80,180,203,241,108,54,123,39,80,2,204,206,
206,78,56,61,95,41,105,140,213,34,18,96,182,243,10,192,42,141,9,208,104,52,100,138,144,119,164,175,212,5,224,211,142,41,60,34,235,241,177,88,12,162,209,104,11,120,6,62,59,68,242,207,234,141,219,161,217,
108,130,101,89,96,89,150,170,93,142,102,179,217,185,64,8,160,35,251,60,232,248,57,3,28,87,150,63,139,228,143,85,154,49,95,98,255,50,157,36,129,3,254,188,44,180,139,70,163,16,139,197,90,4,96,36,96,42,128,
219,72,100,255,249,250,179,131,145,192,178,44,145,26,120,50,7,134,160,162,127,147,57,54,20,224,162,215,68,170,64,153,1,145,252,9,88,223,49,18,168,192,55,12,3,98,177,24,196,227,113,146,0,188,2,80,230,144,
213,155,217,127,70,132,122,189,222,34,64,163,209,128,122,189,14,245,122,93,68,130,34,0,252,171,155,54,137,18,175,221,150,129,47,2,25,147,64,244,25,145,79,128,85,128,129,143,9,195,28,34,174,140,1,192,252,
236,236,108,168,36,208,1,63,30,143,67,34,145,88,67,2,222,15,16,117,2,222,4,154,166,217,2,221,48,12,104,52,26,16,137,68,192,178,172,214,247,4,36,96,209,218,81,79,10,160,178,251,170,158,143,193,167,84,129,
34,130,204,15,224,165,175,211,74,160,3,126,34,145,128,68,34,1,241,120,188,117,48,5,96,36,224,123,63,107,3,172,128,76,233,40,187,95,175,215,193,178,172,182,115,189,94,135,90,173,38,106,147,76,54,155,205,
123,81,128,219,42,135,79,229,249,243,126,129,138,8,172,2,145,72,164,141,0,148,82,116,82,9,220,130,159,76,38,215,16,128,50,1,152,248,188,255,99,89,86,171,247,51,213,168,215,235,194,168,129,153,8,129,138,
239,114,165,0,78,200,119,91,21,234,225,216,150,234,253,212,65,41,2,239,16,82,102,128,29,140,249,157,82,2,55,224,227,131,153,2,6,62,239,8,138,124,32,236,241,243,170,135,237,62,238,249,236,92,171,213,68,
206,178,86,104,136,21,96,202,77,54,139,247,236,117,149,128,242,11,248,198,192,10,64,229,16,194,84,2,93,155,207,14,6,62,175,0,88,5,68,33,32,229,248,90,150,213,246,121,108,247,249,78,18,141,70,219,156,71,
174,76,57,99,7,106,5,112,194,190,191,201,50,124,50,187,143,65,230,109,158,72,17,248,108,24,95,65,236,3,80,42,16,134,18,232,122,251,201,100,178,13,120,246,156,247,3,98,177,216,154,44,32,21,1,81,118,31,
219,122,203,178,90,189,126,117,117,117,141,2,172,174,174,138,84,64,233,11,176,127,116,76,39,205,75,245,70,202,68,168,178,132,188,105,192,9,19,118,240,18,138,123,20,59,4,255,135,41,65,58,12,240,49,208,
24,124,76,6,252,58,59,15,12,12,144,239,227,200,1,71,19,248,96,237,193,206,216,185,100,237,37,40,255,174,76,85,59,231,35,110,6,120,220,12,8,137,236,60,159,255,199,149,193,206,19,6,60,44,18,184,1,31,131,
205,251,0,34,66,12,12,12,180,249,8,216,116,240,81,132,44,159,192,155,20,85,126,65,7,215,136,51,210,167,28,205,226,229,86,54,120,67,129,206,31,56,236,195,131,30,172,98,124,197,49,251,131,36,129,91,240,
41,240,120,66,96,208,153,25,160,162,40,150,54,230,205,6,15,62,175,134,184,77,176,137,33,202,168,99,222,165,10,48,161,219,171,69,160,83,175,203,128,22,145,130,29,134,97,172,169,40,174,60,223,56,146,6,144,
146,192,77,134,143,1,196,247,90,81,175,151,16,83,250,59,24,84,42,146,96,109,64,69,94,130,162,36,128,171,222,143,165,91,245,88,69,2,217,153,141,168,241,36,224,31,123,37,129,27,240,49,216,24,124,214,203,
121,82,72,192,80,14,29,227,209,68,158,248,24,108,70,48,106,120,153,200,14,74,9,48,238,229,207,82,96,83,169,77,63,100,144,145,64,228,27,232,144,192,107,207,167,194,62,222,23,240,10,62,245,31,100,246,158,
169,164,108,146,137,83,164,248,70,113,239,214,145,44,246,121,150,205,162,242,218,145,72,68,120,230,201,35,59,179,239,96,47,87,231,63,42,242,4,71,225,197,44,158,49,89,195,243,177,62,126,206,94,27,24,24,
104,203,2,186,117,148,117,72,128,37,159,159,84,162,0,94,111,48,8,131,72,145,129,189,143,129,23,41,128,46,160,186,103,252,251,146,80,199,45,9,254,169,234,117,216,27,167,146,62,84,10,56,104,240,241,216,
139,44,165,46,26,96,115,53,26,72,57,113,162,11,242,36,225,229,93,5,168,91,18,176,51,79,2,213,52,50,60,192,226,70,114,249,100,14,5,62,239,11,132,1,62,63,250,26,148,105,145,154,0,190,1,41,21,224,207,186,
210,239,198,4,232,146,64,53,221,12,0,180,72,192,192,199,33,24,223,251,121,115,192,122,126,39,138,74,234,21,157,33,237,154,0,162,70,165,192,199,128,5,101,2,100,215,224,125,2,157,34,35,1,6,95,5,58,62,199,
98,177,182,134,15,83,5,124,150,146,43,2,96,89,167,38,110,240,224,251,117,0,189,154,132,32,72,192,20,133,79,192,80,62,0,15,62,85,183,176,73,192,135,227,84,148,229,197,4,20,69,206,157,155,100,144,87,32,
253,144,129,247,9,220,146,64,6,62,159,3,96,54,63,26,141,10,213,41,44,2,224,176,88,148,85,149,204,26,46,169,156,192,69,170,1,217,212,36,55,89,193,48,165,95,39,68,116,163,4,252,4,78,81,207,199,207,77,211,
212,86,186,32,193,231,231,76,242,179,135,21,235,7,254,174,82,128,60,188,88,235,71,254,176,140,213,20,105,130,118,252,220,134,136,186,189,144,2,30,147,66,4,190,238,255,13,170,240,115,6,240,112,185,139,
105,244,82,2,20,68,206,81,163,209,128,104,52,234,106,124,192,143,41,8,42,68,212,178,125,10,5,224,193,119,75,234,32,204,1,63,55,66,244,88,177,112,68,58,77,60,50,53,53,85,178,109,187,64,37,115,36,243,242,
73,181,112,51,242,231,118,128,72,117,45,156,53,211,73,25,243,182,159,189,199,147,128,129,238,101,76,35,136,222,143,215,2,240,143,49,17,68,224,171,38,198,176,68,208,23,0,48,38,154,173,170,211,187,168,176,
48,12,19,32,187,6,149,44,82,41,0,37,251,120,54,143,95,83,229,71,9,248,25,66,212,76,105,201,66,17,128,23,251,10,104,77,8,153,19,245,228,90,173,230,90,178,188,156,253,142,30,178,239,82,19,75,100,106,64,
141,191,199,98,177,86,184,235,69,165,248,122,120,5,159,159,12,202,79,15,103,83,229,36,191,49,167,69,128,153,153,153,162,109,219,121,81,37,4,83,143,181,60,87,191,100,240,114,45,54,92,42,3,159,154,109,196,
14,209,180,109,63,245,112,219,110,252,12,96,254,57,35,130,68,254,243,58,75,199,163,232,199,111,240,147,67,152,124,213,106,53,87,19,28,168,61,0,252,154,128,160,67,68,106,214,13,3,63,72,7,85,55,81,212,108,
54,97,117,117,181,5,242,234,234,106,235,185,136,12,162,222,239,252,206,13,29,172,90,45,116,239,222,189,226,135,31,126,56,193,38,16,240,127,182,217,108,66,44,22,243,156,203,246,115,246,250,93,106,166,12,
158,138,197,143,249,243,64,133,249,127,249,182,197,160,87,171,213,214,99,124,176,207,176,51,63,226,137,174,157,63,113,226,132,22,1,248,128,245,134,200,179,183,44,11,86,87,87,59,106,10,176,148,122,253,
46,203,245,139,204,1,59,58,25,205,240,109,196,3,203,159,41,18,80,107,3,209,111,220,208,197,168,77,35,239,221,187,87,60,116,232,208,24,0,188,45,202,162,121,201,190,133,209,187,221,92,139,31,78,197,19,76,
153,236,135,173,70,212,25,131,143,15,172,0,181,90,109,141,34,176,213,64,2,147,50,119,242,228,201,207,180,135,155,137,94,59,99,219,118,73,196,218,74,165,226,201,41,244,19,251,235,246,64,213,68,83,106,86,
109,144,189,219,173,58,49,112,25,9,40,233,103,239,227,207,48,199,143,248,15,37,219,182,103,220,96,179,166,43,127,245,213,87,165,131,7,15,254,31,0,252,135,200,102,213,235,245,192,149,160,19,61,16,103,13,
177,83,219,201,94,143,29,107,6,56,62,51,192,217,99,44,251,24,124,65,249,243,169,83,167,254,215,23,1,0,0,238,223,191,255,143,67,135,14,165,1,224,79,162,47,122,37,65,152,141,170,75,2,217,206,37,157,32,100,
189,94,135,74,165,210,6,58,123,142,123,61,150,252,74,165,210,182,78,144,40,183,78,159,62,253,185,219,14,41,68,239,254,253,251,127,61,120,240,224,40,72,230,149,179,133,140,110,72,128,243,228,221,232,129,
221,34,30,6,95,100,219,69,71,181,90,149,154,93,195,48,238,156,62,125,250,63,189,68,104,82,228,14,28,56,176,0,0,135,1,96,68,212,139,235,245,186,106,125,90,40,38,33,12,32,195,254,13,22,73,81,192,243,126,
0,35,10,83,3,73,251,21,206,156,57,243,111,94,211,205,210,113,203,43,87,174,148,0,32,195,6,139,68,33,226,202,202,138,171,16,49,232,44,155,223,48,179,19,14,42,147,125,222,222,83,246,159,169,3,51,11,146,
80,178,96,219,118,198,207,128,147,178,219,126,253,245,215,213,3,7,14,220,165,148,0,151,90,173,214,114,174,122,49,68,236,132,114,136,222,107,52,26,100,152,71,197,251,236,49,3,95,210,94,5,0,200,76,79,79,
151,66,37,0,35,193,7,31,124,32,36,1,246,108,131,38,65,175,219,116,213,153,165,120,85,128,227,80,143,145,68,178,104,167,0,0,153,153,153,25,223,187,161,104,27,238,111,190,249,134,36,1,31,38,214,106,181,
214,96,75,63,133,136,97,252,166,109,219,36,184,248,53,138,0,229,114,89,9,254,217,179,103,3,217,15,201,21,74,140,4,182,109,31,54,12,67,104,14,86,87,87,61,45,146,236,87,233,23,229,249,121,224,49,232,60,
248,245,122,29,170,213,106,27,248,68,14,166,0,0,153,115,231,206,5,182,25,150,235,110,42,82,2,222,201,243,75,130,126,54,1,204,233,147,245,116,124,48,7,241,247,223,127,87,130,127,254,252,249,64,183,195,
243,20,187,205,207,207,87,51,153,204,93,89,136,104,219,54,84,171,85,215,43,102,131,0,161,219,210,79,129,143,135,114,241,123,172,231,175,172,172,200,154,165,0,0,153,11,23,46,4,190,23,162,233,245,139,140,
4,182,109,31,6,128,17,209,106,34,47,36,232,87,191,128,129,143,193,230,193,231,9,81,173,86,225,183,223,126,147,130,111,24,70,40,224,251,34,128,74,9,130,34,65,191,72,63,27,45,165,128,231,9,192,30,51,240,
37,51,134,10,134,97,100,46,94,188,24,218,86,184,166,223,11,228,243,249,234,196,196,132,50,79,80,169,84,32,145,72,116,52,58,232,164,9,104,52,26,90,61,31,131,191,188,188,172,4,255,210,165,75,161,110,134,
109,6,113,145,124,62,95,29,31,31,151,134,136,88,9,214,11,9,216,153,234,249,252,164,78,30,252,231,207,159,43,193,191,124,249,114,232,59,161,155,65,93,104,97,97,161,58,49,49,33,13,17,253,144,160,87,165,
31,79,224,212,57,42,149,138,20,124,195,48,10,0,144,113,210,240,208,55,4,96,36,160,148,128,39,65,165,82,129,100,50,233,153,4,189,18,34,178,112,79,54,117,27,43,64,181,90,133,82,169,164,4,255,234,213,171,
29,187,17,134,25,244,5,23,22,22,170,251,247,239,87,134,136,229,114,185,35,36,8,139,20,108,117,14,5,62,245,122,181,90,133,103,207,158,201,102,241,22,0,32,243,201,39,159,116,244,86,56,102,24,23,125,240,
224,193,26,18,80,123,13,88,150,5,155,54,109,234,120,104,24,4,25,248,189,140,249,213,58,120,37,79,163,209,128,82,169,68,78,232,192,224,127,250,233,167,29,191,15,82,52,172,11,139,54,149,98,37,22,139,193,
208,208,144,167,107,118,98,153,153,234,154,108,217,24,83,48,217,247,109,219,134,151,95,126,25,150,150,150,90,251,255,243,117,234,86,9,69,1,174,94,189,154,6,128,121,195,48,200,217,68,241,120,28,94,125,
245,85,95,203,168,187,109,10,240,76,99,157,109,115,217,61,6,170,213,42,181,150,111,4,0,14,103,50,153,187,243,243,243,213,190,38,192,149,43,87,148,224,15,15,15,7,178,134,190,87,72,160,187,77,27,187,215,
128,138,4,249,124,190,218,151,4,184,124,249,114,218,48,12,225,14,156,241,120,28,70,70,70,2,221,77,179,219,33,34,35,129,238,54,49,145,72,164,165,4,120,134,175,243,189,17,0,56,60,49,49,209,49,18,4,70,128,
75,151,46,73,193,79,36,18,129,130,207,164,183,23,18,68,212,221,64,100,247,79,198,230,128,88,224,209,81,18,4,66,128,139,23,47,10,193,103,178,183,109,219,182,80,54,59,244,67,130,32,201,192,223,29,149,157,
69,202,96,24,6,36,147,73,209,92,255,22,9,22,22,22,170,61,77,128,139,23,47,10,55,94,102,171,113,182,111,223,30,218,78,151,189,20,34,138,110,136,37,251,143,201,100,18,42,149,202,26,18,24,134,49,98,219,246,
225,241,241,241,80,73,224,139,0,23,46,92,32,193,199,13,178,109,219,54,207,171,138,195,32,64,216,126,66,16,36,64,223,27,1,128,80,73,224,153,0,231,207,159,87,130,191,125,251,118,72,36,18,29,143,109,187,
109,18,24,9,116,29,67,108,14,68,209,193,248,248,248,221,7,15,30,84,123,130,0,231,206,157,107,3,159,175,96,36,18,129,29,59,118,116,5,252,94,35,129,155,232,37,22,139,181,77,11,227,73,176,127,255,254,192,
73,224,154,0,103,207,158,85,130,191,115,231,206,174,130,223,41,19,160,67,2,89,36,64,125,62,145,72,172,33,1,14,17,223,127,255,253,187,223,126,251,109,181,43,4,152,153,153,105,129,79,177,59,18,137,192,235,
175,191,222,117,240,253,2,29,116,136,40,35,1,31,197,96,18,16,165,165,4,65,145,64,155,0,211,211,211,82,240,77,211,236,41,240,123,197,20,240,36,160,174,205,247,118,211,52,73,37,192,36,8,74,9,180,8,48,53,
53,37,77,239,50,240,147,201,36,244,90,233,149,21,198,56,91,40,243,5,240,166,151,137,68,2,86,86,86,164,36,248,238,187,239,170,161,18,224,204,153,51,74,240,223,120,227,141,158,4,223,107,162,168,147,33,34,
101,6,24,224,166,105,66,50,153,108,35,1,31,34,250,37,65,68,163,1,231,1,96,140,90,161,26,137,68,122,26,124,86,58,189,79,161,232,90,252,173,114,69,155,87,225,237,235,82,169,84,91,22,149,187,230,152,131,
79,56,10,112,250,244,233,219,240,98,82,7,217,243,119,237,218,213,243,224,7,153,50,14,114,155,26,221,232,0,224,197,182,182,50,115,176,111,223,190,209,135,15,31,254,37,80,2,156,58,117,234,38,0,156,16,129,
255,230,155,111,246,13,248,189,22,34,82,57,2,202,49,228,73,144,76,38,215,172,35,112,62,51,182,111,223,190,244,195,135,15,255,26,8,1,62,254,248,227,35,0,112,139,106,184,72,36,2,187,119,239,238,123,240,
189,2,30,20,73,216,65,41,19,21,29,96,18,172,172,172,64,179,217,228,235,242,167,189,123,247,254,253,225,195,135,255,240,69,128,147,39,79,142,2,192,127,3,64,146,106,168,183,222,122,11,6,6,6,96,61,149,110,
78,40,209,73,19,83,36,16,172,40,58,188,119,239,222,187,143,30,61,210,158,91,72,237,19,120,211,182,237,52,191,63,160,109,219,176,99,199,142,190,7,63,44,7,207,235,53,177,83,40,186,97,54,127,207,228,84,42,
5,91,183,110,165,126,55,109,219,246,77,207,10,112,226,196,137,9,0,248,47,138,121,91,183,110,133,225,225,97,88,175,165,155,33,162,206,182,117,124,137,199,227,96,89,22,84,42,21,254,127,189,253,222,123,239,
45,60,122,244,168,232,90,1,108,219,190,70,245,148,88,44,6,35,35,35,235,10,240,32,247,1,14,66,65,240,77,162,241,65,133,141,236,24,30,30,110,219,142,7,93,239,154,107,5,152,156,156,156,48,12,227,58,245,161,
126,118,250,220,216,215,94,8,17,69,73,33,6,48,255,56,30,143,195,243,231,207,249,106,140,190,251,238,187,11,223,127,255,125,209,141,2,92,163,216,61,56,56,8,131,131,131,235,82,246,169,27,96,139,122,122,
39,182,150,195,126,23,117,219,120,74,21,6,7,7,97,96,96,128,186,254,53,109,19,48,57,57,57,10,220,205,34,88,217,182,109,27,172,231,34,186,185,69,144,55,180,210,37,11,126,31,207,56,86,29,175,188,242,10,117,
189,137,233,233,233,81,93,5,56,66,189,153,74,165,96,243,230,205,176,222,11,127,183,52,63,128,6,185,57,37,127,171,120,17,33,6,7,7,33,145,72,80,97,225,17,93,2,28,163,222,116,187,116,107,189,133,135,97,237,
46,234,230,187,60,248,34,66,108,217,178,133,170,199,49,37,1,38,39,39,211,32,152,203,159,78,167,225,143,84,84,128,133,125,71,17,94,73,176,83,73,77,55,195,199,75,47,189,68,93,115,204,25,205,149,42,192,152,
72,254,227,241,248,186,3,121,113,113,17,22,23,23,67,81,131,48,66,68,217,120,1,142,30,216,128,17,69,2,21,1,72,231,111,61,122,254,197,98,17,150,150,150,96,105,105,73,72,2,202,23,232,212,166,214,212,231,
169,177,1,62,157,204,30,111,218,180,137,218,84,122,66,214,38,81,0,120,131,122,163,215,166,118,5,5,62,43,191,254,250,43,216,182,13,163,163,163,36,9,168,193,24,182,52,60,236,229,232,212,141,165,100,179,
137,216,145,76,38,215,140,34,218,182,253,47,42,2,144,161,194,122,26,240,225,193,103,133,189,230,150,4,76,118,131,190,53,46,190,97,37,101,142,168,208,21,147,129,153,108,238,253,180,138,0,235,186,136,192,
247,67,2,124,135,210,32,239,142,174,82,0,62,92,85,229,53,116,74,244,143,12,190,87,18,248,185,123,168,142,82,240,69,116,43,90,252,216,48,12,24,28,28,164,8,240,199,84,0,93,240,221,144,64,38,237,65,154,0,
85,68,34,202,96,10,20,160,244,135,35,0,243,244,189,124,79,68,2,94,13,120,69,224,253,2,89,239,215,49,1,140,84,204,220,168,110,72,205,118,104,215,93,143,200,103,2,215,21,248,197,98,81,244,118,1,0,118,57,
103,87,223,23,121,235,65,15,41,83,175,227,67,116,61,0,104,187,185,148,238,157,203,133,4,80,220,160,176,95,193,207,228,114,185,34,0,100,84,36,160,20,68,7,124,63,164,224,31,55,26,141,53,4,160,18,69,248,
254,206,170,123,21,83,4,88,160,222,192,51,77,214,17,248,37,0,0,231,44,37,129,200,135,80,145,64,118,48,64,241,254,129,120,175,65,246,190,168,231,203,82,198,108,7,86,162,44,168,8,64,182,154,98,15,251,190,
5,159,149,48,73,192,219,109,55,143,117,14,209,111,10,48,43,170,8,144,23,17,160,31,204,128,23,240,59,69,2,55,3,63,50,133,208,33,130,101,89,34,2,228,165,4,112,108,34,217,130,165,82,105,221,130,223,73,37,
16,17,67,102,38,84,10,192,147,64,128,85,209,193,87,233,4,206,201,194,162,245,10,126,55,205,1,5,60,175,0,50,240,249,223,18,96,53,167,27,6,126,33,50,3,189,232,11,4,9,126,144,36,160,136,160,11,190,234,177,
140,12,203,203,203,34,156,254,162,69,128,92,46,87,16,85,252,167,159,126,90,247,224,7,69,2,63,17,130,219,3,43,129,0,163,66,46,151,203,187,73,4,125,46,82,129,94,49,5,97,130,31,4,9,84,38,129,34,2,150,125,
55,160,179,243,179,103,207,68,189,255,115,157,250,182,229,11,39,39,39,255,9,196,240,176,105,154,240,206,59,239,116,117,134,80,39,192,231,218,66,184,1,38,43,163,163,163,107,230,77,138,214,0,226,199,252,
107,162,212,173,106,114,74,181,90,133,31,126,248,129,138,214,138,185,92,110,151,151,84,240,113,81,86,240,199,31,127,236,90,88,216,105,240,253,40,129,110,202,152,234,209,50,111,159,127,189,94,175,203,48,
57,174,91,207,182,181,129,143,31,63,46,238,217,179,103,12,0,222,230,63,88,175,215,97,121,121,25,182,108,217,210,177,109,95,187,5,62,106,143,234,158,61,123,164,247,64,42,149,74,144,72,36,32,149,74,145,
74,32,43,42,115,65,249,21,236,86,53,79,158,60,129,114,185,76,122,254,185,92,238,51,221,58,70,4,236,33,91,188,92,46,195,147,39,79,58,166,4,197,98,177,107,224,187,85,130,98,177,216,214,46,162,5,39,110,146,
70,84,239,87,128,95,116,211,251,215,248,0,200,254,141,57,246,143,156,76,96,154,38,236,222,189,59,180,69,35,229,114,25,22,23,23,69,149,236,24,248,110,125,130,84,42,5,59,118,236,88,211,46,58,219,200,139,
110,173,131,85,96,121,121,25,138,197,98,219,168,31,22,35,167,77,10,190,9,224,84,120,194,169,176,176,12,13,13,193,206,157,59,61,221,8,146,42,181,90,13,158,62,125,170,138,58,242,0,112,180,147,224,115,36,
184,13,138,21,55,67,67,67,240,218,107,175,181,57,205,178,45,97,84,38,194,178,44,120,250,244,41,252,242,203,47,178,143,31,205,229,114,115,110,235,100,40,42,252,17,0,220,4,201,180,34,211,52,97,104,104,8,
134,135,135,61,71,9,44,212,212,8,55,239,228,114,185,227,208,229,50,57,57,121,27,0,62,82,125,110,104,104,8,134,134,134,218,20,65,119,162,134,109,219,80,171,213,224,231,159,127,134,165,165,37,149,217,61,
158,203,229,238,120,169,139,161,81,89,169,57,224,37,48,157,78,195,224,224,32,164,82,41,161,50,148,203,101,168,84,42,173,76,163,64,210,248,50,147,203,229,110,245,74,66,106,114,114,114,218,233,28,202,18,
143,199,97,243,230,205,176,121,243,102,24,24,24,32,29,70,219,182,161,209,104,64,185,92,134,149,149,21,40,149,74,50,19,232,75,246,93,17,192,169,236,40,0,124,41,179,127,50,133,72,165,82,173,202,121,241,
5,29,121,43,64,143,21,167,115,124,9,130,169,245,58,29,198,52,77,40,151,203,94,28,235,130,211,46,69,63,117,48,92,86,248,58,0,76,233,168,65,0,165,4,0,159,231,114,185,235,208,227,165,159,219,197,149,247,
246,248,241,227,188,19,23,167,189,168,129,139,10,126,6,0,127,206,229,114,255,3,125,80,156,118,153,5,128,85,167,93,194,218,78,229,142,211,46,115,65,93,208,240,193,250,81,199,17,58,230,85,2,9,73,251,194,
113,244,74,208,167,197,137,20,88,187,4,209,73,138,168,93,138,65,255,95,35,160,74,143,57,161,209,56,40,22,35,114,21,43,192,139,57,107,115,97,84,174,7,200,48,138,218,101,204,69,71,201,179,14,17,182,239,
99,132,88,113,190,178,105,71,222,65,103,152,114,189,22,39,191,210,214,30,184,83,172,199,142,176,81,54,202,70,217,40,27,101,163,108,148,141,178,81,54,202,70,217,40,27,165,103,202,255,3,211,161,220,61,107,
244,169,123,0,0,0,0,73,69,78,68,174,66,96,130,0,0};

const char* KetonalConfigComponent::image_png = (const char*) resource_KetonalConfigComponent_image_png;
const int KetonalConfigComponent::image_pngSize = 5931;

// JUCER_RESOURCE: html_png, 1732, "C:\html.png"
static const unsigned char resource_KetonalConfigComponent_html_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,32,8,6,0,0,0,115,122,122,244,0,0,0,1,115,82,71,66,0,174,206,28,233,
0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,216,5,30,12,40,56,54,218,116,110,0,0,6,68,73,68,65,84,88,195,173,151,
77,108,20,201,21,199,127,85,213,221,211,243,105,143,199,198,107,175,193,134,16,150,143,5,7,41,18,138,148,107,34,193,5,9,18,201,107,9,228,195,18,177,135,189,68,34,57,248,18,41,18,82,114,66,92,184,196,135,
149,56,70,8,229,102,113,142,172,64,132,136,178,108,140,189,176,27,204,248,19,227,241,120,62,187,187,186,114,152,15,207,216,227,181,65,169,81,169,166,75,221,253,254,239,189,255,255,189,106,193,238,225,
60,125,250,244,23,158,231,73,0,99,12,173,107,235,127,173,181,48,198,8,173,117,249,218,181,107,143,179,217,108,17,208,128,169,207,125,135,232,176,247,209,226,226,226,146,49,166,205,120,99,234,208,176,85,
10,40,86,2,74,158,198,247,3,116,24,98,9,147,125,183,244,114,114,124,236,215,127,5,42,64,120,16,16,162,195,245,241,165,165,165,185,157,198,55,10,62,203,27,30,27,69,31,91,10,146,81,137,107,11,164,8,9,3,
159,170,231,225,218,74,191,254,110,238,183,159,125,54,246,21,80,2,130,253,64,116,2,112,98,121,121,121,182,97,124,171,20,240,106,165,76,161,28,144,78,88,12,164,29,18,174,220,142,136,214,4,65,64,165,82,
161,92,46,147,78,167,245,204,204,204,239,39,38,38,190,2,242,128,255,67,32,100,199,77,41,17,66,144,125,231,241,245,66,9,16,140,30,77,114,114,40,78,42,102,33,132,104,78,165,20,150,101,161,148,66,107,77,
62,159,87,151,46,93,250,211,189,123,247,110,0,61,128,189,71,170,247,6,128,16,188,90,169,176,240,182,202,161,46,135,115,35,9,18,209,118,195,82,202,230,84,74,97,219,54,66,8,214,214,214,200,100,50,234,234,
213,171,127,188,123,247,238,231,251,129,176,58,109,46,188,173,178,146,243,233,79,71,248,81,127,20,48,109,42,16,66,180,93,75,41,177,44,11,219,182,241,60,15,173,53,153,76,70,141,141,141,253,193,113,156,
224,230,205,155,127,1,54,59,113,162,35,7,254,246,247,87,179,73,87,113,230,72,12,177,67,5,157,84,33,5,4,65,64,62,159,103,101,101,133,108,54,139,239,251,12,12,12,48,52,52,164,159,61,123,246,187,137,137,
137,41,160,176,83,29,123,114,224,196,199,113,84,157,11,173,97,23,66,96,128,55,235,30,255,124,89,224,241,124,129,249,197,50,66,74,54,202,138,178,73,64,180,15,34,221,4,65,192,234,234,170,58,125,250,244,
159,239,223,191,63,14,56,59,157,238,24,129,103,115,203,179,195,125,145,142,158,87,60,205,55,11,69,138,149,128,132,171,56,62,16,229,205,219,10,150,130,133,181,50,129,239,225,121,85,210,81,195,64,183,2,
104,112,100,117,116,116,244,39,192,106,189,88,237,205,129,161,140,139,16,236,202,121,197,15,249,250,117,137,138,31,98,91,138,83,135,227,216,74,240,81,58,194,243,215,69,148,84,72,199,197,178,29,70,6,35,
36,34,130,32,8,208,90,35,132,56,4,164,128,181,125,73,232,216,178,233,117,195,184,14,13,255,121,83,194,11,12,82,72,14,247,70,136,216,10,99,12,74,214,210,34,164,4,99,176,133,164,39,21,69,96,176,44,11,173,
117,227,125,106,39,9,173,206,42,20,187,216,254,223,181,42,101,191,102,196,146,48,208,19,105,70,201,215,141,103,12,32,232,142,43,44,181,237,132,148,146,48,12,233,84,158,247,4,208,106,188,84,13,89,201,5,
200,58,1,251,187,157,166,1,33,4,197,106,8,66,212,9,101,232,73,58,77,39,164,220,190,175,83,147,178,246,82,65,171,206,223,188,243,106,6,106,14,210,223,237,180,129,204,21,53,2,129,17,32,4,244,36,237,38,128,
78,117,227,192,41,0,8,66,195,250,86,208,148,159,107,75,18,81,171,169,138,82,53,164,88,13,107,128,16,196,34,18,215,81,187,56,180,135,253,253,1,228,138,26,16,205,124,247,36,236,182,8,45,109,120,32,37,194,
24,48,166,205,251,86,207,55,138,254,135,1,40,84,182,243,43,16,36,99,219,6,74,213,144,181,252,54,55,12,144,73,58,187,56,84,3,250,129,0,170,190,105,230,23,1,17,187,94,13,77,77,25,150,146,248,65,8,2,44,37,
72,197,172,93,39,168,229,156,71,204,85,7,239,134,173,229,55,52,53,98,137,250,175,88,13,9,13,204,102,203,100,146,54,65,72,61,66,130,174,152,221,44,215,141,89,168,132,172,228,124,142,245,199,62,12,128,109,
53,94,88,3,242,122,205,227,31,243,5,148,146,244,118,57,45,247,74,162,17,213,246,236,70,81,243,237,114,133,147,67,113,108,75,30,60,5,173,105,232,77,57,172,229,253,150,166,97,72,70,45,62,249,56,134,20,144,
136,90,20,202,1,8,216,40,106,10,149,16,29,134,44,174,87,9,66,195,217,225,4,142,245,158,50,212,97,45,159,212,139,78,169,170,201,190,171,34,5,244,119,217,12,247,213,122,133,49,134,51,71,226,124,187,84,38,
87,244,241,3,195,139,197,50,169,168,98,48,227,210,21,83,109,205,236,192,0,94,191,173,114,172,223,69,8,65,62,159,103,184,47,206,200,33,151,205,205,77,44,203,144,203,109,180,233,124,48,161,25,76,212,0,69,
34,17,124,223,71,251,85,194,48,137,148,181,208,135,239,83,7,222,172,87,233,73,218,164,227,22,147,147,147,76,78,78,226,186,46,183,110,221,226,198,141,27,60,127,254,156,135,15,31,114,229,202,21,98,177,24,
197,98,145,7,15,30,112,249,242,101,78,157,58,197,212,212,20,231,206,157,227,241,227,199,220,185,115,135,120,60,206,252,98,233,224,0,142,245,71,249,102,161,196,232,72,28,33,4,51,51,51,216,182,13,192,133,
11,23,56,127,254,60,143,30,61,226,250,245,235,205,72,76,79,79,51,62,62,142,109,219,76,77,77,113,241,226,69,158,60,121,130,31,4,188,88,172,16,115,173,131,3,56,210,231,98,128,127,125,95,164,226,133,164,
211,105,28,199,105,83,200,206,122,177,83,61,211,211,211,252,230,139,47,89,216,140,208,147,80,28,238,141,188,159,10,134,251,92,18,174,34,52,134,104,230,40,71,7,82,29,13,118,50,14,240,243,95,254,138,114,
232,50,210,239,146,142,171,61,137,216,241,72,102,140,153,109,108,204,207,207,67,172,159,229,156,207,106,246,123,126,246,211,79,73,68,4,223,189,124,193,217,79,207,96,140,33,208,134,167,207,254,205,224,
240,113,214,183,2,230,231,230,56,127,246,4,67,189,81,164,216,174,138,177,88,236,36,48,215,218,146,59,1,248,177,49,230,197,78,164,198,212,26,202,70,33,96,171,28,80,245,67,66,109,48,128,146,16,177,5,9,87,
209,29,183,72,197,20,236,56,65,3,68,163,209,79,128,249,86,0,157,82,80,184,125,251,246,228,230,230,102,247,15,233,119,231,151,242,94,123,141,195,72,42,149,202,213,143,229,251,126,29,71,128,238,250,250,
255,28,85,32,87,95,155,227,127,190,30,33,119,25,71,255,50,0,0,0,0,73,69,78,68,174,66,96,130,0,0};

const char* KetonalConfigComponent::html_png = (const char*) resource_KetonalConfigComponent_html_png;
const int KetonalConfigComponent::html_pngSize = 1732;
